package leetCode.solution;

/**
 * 1310. 子数组异或查询
 * 
 * 有一个正整数数组 arr，现给你一个对应的查询数组 queries，其中 queries[i] = [Li, Ri]。
 * 
 * 对于每个查询 i，请你计算从 Li 到 Ri 的 XOR 值（即 arr[Li] xor arr[Li+1] xor ... xor
 * arr[Ri]）作为本次查询的结果。
 * 
 * 并返回一个包含给定查询 queries 所有结果的数组。
 * 
 * @author jerry
 * @ClassName: xorQueriesOfASubarray
 * @Description:TODO(描述这个类的作用)
 * @date 2022年12月5日 下午5:26:53
 */
public class xorQueriesOfASubarray {
	public int[] xorQueries(int[] arr, int[][] queries) {
		int res[] = new int[queries.length];
		int ends[] = new int[arr.length + 1];
		ends[0] = 0;
		for (int i = 0; i < arr.length; i++) {
			ends[i + 1] = ends[i] ^ arr[i];
		}
		for (int j = 0; j < queries.length; j++) {
			res[j] = ends[queries[j][1] + 1] ^ ends[queries[j][0]];
		}
		return res;
	}
}
